<?php
// +----------------------------------------------------------------------
// | 配置文件
// | 请根据接口域名创建对应核心配置文件，文件名同接口域名，后缀.php
// | 例：api.test.com ，对应核心配置文件为 core\api.test.com.php
// +----------------------------------------------------------------------
error_reporting(E_ERROR | E_WARNING | E_PARSE);
date_default_timezone_set('Asia/Shanghai');

$serverName  = $_SERVER['SERVER_NAME'];       // 服务器主机名  例:api.test.com
$configFile  = 'core'.DS.$serverName.'.php';  // 核心配置文件  例:core\api.test.com.php
try {
    // 核心配置
    $configCore = include_once($configFile); 
} catch (Exception $e) {
    throw new Exception('配置文件不存在：'.$e->getMessage());
}

// 基础配置
$configBase =  [ 
    //数据库配置
    'database'  => [   
        // 数据库类型
        'type'           => 'mysql',
        // 端口
        'hostport'       => '3306',
        'hostname'       => '127.0.0.1',
        'database'       => 'ppgo_job2',
        'username'       => 'test',
        'password'       => '123123',
        // 连接dsn
        'dsn'            => '',
        // 数据库连接参数
        'params'         => [],
        // 数据库编码默认采用utf8
        'charset'        => 'utf8mb4',//原: utf8
        // 数据库表前缀
        'prefix'         => 'qh_',
        // 数据库调试模式
        'debug'          => true,
        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'deploy'         => 0,
        // 数据库读写是否分离 主从式有效
        'rw_separate'    => false,
        // 读写分离后 主服务器数量
        'master_num'     => 1,
        // 指定从服务器序号
        'slave_no'       => '',
        // 是否严格检查字段是否存在
        'fields_strict'  => true,
        // 数据集返回类型 array 数组 collection Collection对象
        'resultset_type' => 'array',
        // 是否自动写入时间戳字段
        'auto_timestamp' => false,//严禁使用，对于没有时间戳相关字段的表会报错 2017年6月28日17:18:41 llj
        // 时间字段是否自动格式化输出
        'datetime_format' => 'Y-m-d H:i:s',
        // 是否需要进行SQL性能分析
        'sql_explain'    => true
    ],
    // 应用命名空间
    'app_namespace'          => 'app',
    // 应用调试模式
    'app_debug'              => true,
    // 应用Trace
    'app_trace'              => false,
    // 应用模式状态
    'app_status'             => '',
    // 是否支持多模块
    'app_multi_module'       => true,
    // 入口自动绑定模块
    'auto_bind_module'       => false,
    // 注册的根命名空间
    'root_namespace'         => [],
    // 扩展函数文件
    'extra_file_list'        => [THINK_PATH . 'helper' . EXT],
    // 默认输出类型
    'default_return_type'    => 'json',//原 html
    // 默认AJAX 数据返回格式,可选json xml ...
    'default_ajax_return'    => 'json',
    // 默认JSONP格式返回的处理方法
    'default_jsonp_handler'  => 'jsonpReturn',
    // 默认JSONP处理方法
    'var_jsonp_handler'      => 'callback',
    // 默认时区
    'default_timezone'       => 'PRC',
    // 是否开启多语言
    'lang_switch_on'         => false,
    // 默认全局过滤方法 用逗号分隔多个
    'default_filter'         => '',
    // 默认语言
    'default_lang'           => 'zh-cn',
    // 应用类库后缀
    'class_suffix'           => false,
    // 控制器类后缀
    'controller_suffix'      => false,

    // +----------------------------------------------------------------------
    // | 模块设置
    // +----------------------------------------------------------------------

    // 默认模块名
    'default_module'         => 'admin',//原 index
    // 禁止访问模块
    'deny_module_list'       => ['common'],
    // 默认控制器名
    'default_controller'     => 'Index',
    // 默认操作名
    'default_action'         => 'index',
    // 默认验证器
    'default_validate'       => '',
    // 默认的空控制器名
    'empty_controller'       => 'Error',
    // 操作方法后缀
    'action_suffix'          => '',
    // 自动搜索控制器
    'controller_auto_search' => false,

    // +----------------------------------------------------------------------
    // | URL设置
    // +----------------------------------------------------------------------

    // PATHINFO变量名 用于兼容模式
    'var_pathinfo'           => 's',
    // 兼容PATH_INFO获取
    'pathinfo_fetch'         => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
    // pathinfo分隔符
    'pathinfo_depr'          => '/',
    // URL伪静态后缀
    'url_html_suffix'        => 'html',
    // URL普通方式参数 用于自动生成
    'url_common_param'       => false,
    // URL参数方式 0 按名称成对解析 1 按顺序解析
    'url_param_type'         => 0,
    // 是否开启路由
    'url_route_on'           => true,
    // 路由使用完整匹配 //原: 有，此处补充
    'route_complete_match'   => false,
    // 路由配置文件（支持配置多个）
    'route_config_file'      => ['route','route_admin'],//原:route,此处写无法访问，暂时删除
    // 是否强制使用路由
    'url_route_must'         => false,
    // 域名部署
    'url_domain_deploy'      => false,
    // 域名根，如thinkphp.cn
    'url_domain_root'        => '',
    // 是否自动转换URL中的控制器和操作名
    'url_convert'            => false,
    // 默认的访问控制器层
    'url_controller_layer'   => 'controller',
    // 表单请求类型伪装变量
    'var_method'             => '_method',
    // 表单ajax伪装变量
    'var_ajax'               => '_ajax',
    // 表单pjax伪装变量
    'var_pjax'               => '_pjax',
    // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
    'request_cache'          => false,
    // 请求缓存有效期
    'request_cache_expire'   => null,
    // 全局请求缓存排除规则
    'request_cache_except'   => [],
    // +----------------------------------------------------------------------
    // | 模板设置
    // +----------------------------------------------------------------------

    'template'               => [
        // 模板引擎类型 支持 php think 支持扩展
        'type'         => 'Think',
        // 模板路径
        'view_path'    => '',
        // 模板后缀
        'view_suffix'  => 'html',
        // 模板文件名分隔符
        'view_depr'    => DS,
        // 模板引擎普通标签开始标记
        'tpl_begin'    => '{',
        // 模板引擎普通标签结束标记
        'tpl_end'      => '}',
        // 标签库标签开始标记
        'taglib_begin' => '{',
        // 标签库标签结束标记
        'taglib_end'   => '}',
    ],

    // 视图输出字符串内容替换
    'view_replace_str'       => [],
    // 默认跳转页面对应的模板文件
    'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
    'dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',

    // +----------------------------------------------------------------------
    // | 异常及错误设置
    // +----------------------------------------------------------------------

    // 异常页面的模板文件
    'exception_tmpl'         => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',

    // 错误显示信息,非调试模式有效
    'error_message'          => '页面错误！请稍后再试～',
    // 显示错误信息
    'show_error_msg'         => false,
    // 异常处理handle类 留空使用 \think\exception\Handle
    'exception_handle'       => '',

    // +----------------------------------------------------------------------
    // | 日志设置 注释后不会出现trace模式？？？
    // +----------------------------------------------------------------------

    'log'                    => [
        // 日志记录方式，内置 file socket 支持扩展
        'type'  => 'File',
        // 日志保存目录
        'path'  => LOG_PATH,
        // 日志记录级别
        'level' => [],
    ],

    // +----------------------------------------------------------------------
    // | Trace设置 开启 app_trace 后 有效
    // +----------------------------------------------------------------------
    'trace'                  => [
        // 内置Html Console 支持扩展
        'type' => 'Html',
    ],

    // +----------------------------------------------------------------------
    // | 缓存设置
    // +----------------------------------------------------------------------

    'cache'                  => [
        // 驱动方式
        'type'   => 'File',
        // 缓存保存目录
        'path'   => CACHE_PATH,
        // 缓存前缀
        'prefix' => '',
        // 缓存有效期 0表示永久缓存
        'expire' => 3600,//原 0
    ],

    // +----------------------------------------------------------------------
    // | Cookie设置
    // +----------------------------------------------------------------------
    'cookie'                 => [
        // cookie 名称前缀
        'prefix'    => 'loan_',
        // cookie 保存时间
        'expire'    => 0,
        // cookie 保存路径
        'path'      => '/',
        // cookie 有效域名
        'domain'    => '',
        //  cookie 启用安全传输
        'secure'    => false,
        // httponly设置
        'httponly'  => '',
        // 是否使用 setcookie
        'setcookie' => true,
    ],

    //分页配置
    'paginate'               => [
        'type'      => 'bootstrap',
        'var_page'  => 'page',
        'list_rows' => 15,
    ],

    //原: 无
    'captcha'  => [
        // 验证码字符集合
        'codeSet'  => '1234567890', 
        // 验证码字体大小(px)
        'fontSize' => 15, 
        // 是否画混淆曲线
        'useCurve' => true, 
         // 验证码图片高度
        'imageH'   => 30,
        // 验证码图片宽度
        'imageW'   => 100, 
        // 验证码位数
        'length'   => 4, 
        // 验证成功后是否重置        
        'reset'    => true
    ],
    //mongoDB 配置
    'db_mongo' => [
    'type'    =>   '\think\mongo\Connection', 
    'hostname'    =>   'dds-wz975531be28cf441.mongodb.rds.aliyuncs.com',
    'database'    =>   'yueguangbaika',
    'username'    =>   'ygbkai',
    'password'     =>   'ygbkthxd',
    'hostport'    =>   "3717",
    "dsn"  =>  "mongodb://ygbkai:ygbkthxd@dds-wz975531be28cf441690-pub.mongodb.rds.aliyuncs.com:3717,dds-wz975531be28cf442752-pub.mongodb.rds.aliyuncs.com:3717/yueguangbaika?replicaSet=mgset-4442119"
    ],
    //短信时效 配置
    'sms_aging' => [
        'sms_aging'=>60*60*8
    ],
    'qudao_lv'=>0.9,


    # 新添加
    'pj_type'=>99,
     // 会话设置
    'session' => [
        'id'             => '',
        // SESSION_ID的提交变量,解决flash上传跨域
        'var_session_id' => '',
        // SESSION 前缀
        'prefix'         => 'loan_',//原 think
        // 驱动方式 支持redis memcache memcached
        'type'           => 'redis',
        // 是否自动开启 SESSION
        'auto_start'     => true,
        // redis主机
        'host'       => 'r-wz96c09457c4e894.redis.rds.aliyuncs.com',
         // redis端口
        'port'       => 6379,
         // 密码
        'password'   => 'ijYhn2U3mDgSNYeo',
        // 操作库
        'select'   => '20',
        // 设置根域名
        'domain'    => '',
    ],
    // redis 配置
    'redis' => [
        // redis主机
        'host'     => 'r-wz96c09457c4e894.redis.rds.aliyuncs.com',
         // 密码
        'password' => 'ijYhn2U3mDgSNYeo',
        // 操作库
        'select'   => '17',
    ],
    
    'houtai_name'=>'无效后台请不要登录',

];

// 配置合并 原则:核心配置覆盖基础配置
$config = array_merge_two($configBase, $configCore);

return $config;





/**
 * 二维数组合并
 */
function array_merge_two( array $arr1, array $arr2)
{ 
    $arrTemp = array_merge($arr1,$arr2);
    foreach ($arr1 as $key => $value) {
        if(is_array($value)){
            if(is_array($arr1[$key]) && isset($arr2[$key]) && is_array($arr2[$key])){
                $arr1[$key] = array_merge($arr1[$key],$arr2[$key]);
            }
        }else{
            $arr1[$key] = isset($arr2[$key]) ? $arr2[$key] : $value;
        }
    }
    return array_merge($arrTemp,$arr1);
}